home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / asmexam.arc / ASCIIBIN.ASM < prev    next >
Assembly Source File  |  1984-07-10  |  3KB  |  156 lines

  1. name   ascbin
  2. page   55,132
  3. title  'ASCBIN - ASCII to binary conversion'
  4. comment *
  5.  
  6.   This program contains a pair of routines to convert
  7.   either decimal or hexidecimal ascii strings
  8.   to 32 bit binary integers
  9.   The main prog should load si with the address of the string
  10.   the proc leaves the 32 bit result in DX,CX
  11.  
  12.         *
  13. cseg   segment para
  14.        assume  cs:cseg,ds:cseg,ss:cseg
  15.  
  16. decnum: db '123','zzzz' ; z's are for extra locations
  17. hexnum: db '1ae','zzzz'
  18.        org 100h
  19. main   proc near
  20.        mov ax,cs
  21.        mov ds,ax  ; these two statements set up ds reg for debug
  22.        lea si,decnum
  23.        call decbin
  24.  
  25.        lea si,hexnum
  26.        call hexbin
  27.  
  28.        int 20h
  29.  
  30.  
  31. main   endp
  32.  
  33.  
  34. decbin proc near
  35.        xor     cx,cx
  36.        xor     dx,dx
  37.        mov     bx,-1
  38.        mov     al,[si]
  39.        cmp     al,'+'
  40.        jne     decbin1
  41.        inc     si
  42.        jmp     decbin2
  43.  
  44. decbin1:
  45.        cmp     al,'-'
  46.        jne     decbin2
  47.        xor     bh,bh
  48.        inc     si
  49.  
  50. decbin2:
  51.        lodsb
  52.        or      al,al
  53.        jz      decbin8
  54.        cmp     al,'.'
  55.        jz      decbin4
  56.        cmp     al,'9'
  57.        ja      decbin7
  58.        cmp     al,'0'
  59.        jb      decbin7
  60.        or      bl,bl
  61.        js      decbin3
  62.        inc     bl
  63.  
  64. decbin3:
  65.        push    ax
  66.        mov     di,cx
  67.        mov     ax,dx
  68.        shl     cx,1
  69.        rcl     dx,1
  70.        shl     cx,1
  71.        rcl     dx,1
  72.        add     cx,di
  73.        adc     dx,ax
  74.        shl     cx,1
  75.        rcl     dx,1
  76.        pop     ax
  77.        and     ax,0fh
  78.        add     cx,ax
  79.        adc     dx,0
  80.        jmp     decbin2
  81.  
  82. decbin4:
  83.        or      bl,bl
  84.        jns     decbin7
  85.        xor     bl,bl
  86.        jmp     decbin2
  87.  
  88. decbin7:
  89.        stc
  90.        ret
  91.  
  92. decbin8:
  93.        or      bh,bh
  94.        jnz     decbin9
  95.        not     cx
  96.        not     dx
  97.        add     cx,1
  98.        adc     dx,0
  99.  
  100. decbin9:
  101.        clc
  102.        ret
  103. decbin endp
  104.  
  105.  
  106. hexbin proc    near
  107.        xor     cx,cx
  108.        xor     dx,dx
  109.  
  110. hexbin1:
  111.        lodsb
  112.        or      al,al
  113.        jz      hexbin8
  114.        cmp     al,'0'
  115.        jb      hexbin7
  116.        cmp     al,'9'
  117.        jbe     hexbin3
  118.  
  119. hexbin2:
  120.        or      al,20h
  121.        cmp     al,'f'
  122.        ja      hexbin7
  123.        cmp     al,'a'
  124.        jb      hexbin7
  125.        add     al,9
  126.  
  127. hexbin3:
  128.        shl     cx,1
  129.        rcl     dx,1
  130.        shl     cx,1
  131.        rcl     dx,1
  132.        shl     cx,1
  133.        rcl     dx,1
  134.        shl     cx,1
  135.        rcl     dx,1
  136.        and     ax,0fh
  137.        or      cx,ax
  138.        jmp     hexbin1
  139.  
  140. hexbin7:
  141.        stc
  142.        ret
  143.  
  144. hexbin8:
  145.        clc
  146.        ret
  147.  
  148. hexbin endp
  149.  
  150. cseg   ends
  151.  
  152.        end  main
  153.  
  154.  
  155.  
  156.